/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package arbol_sintactico_abstracto;

import analizadorlexico.Token;
import java.io.IOException;
import java.util.List;
import tabla_de_simbolos.Clase;
import tabla_de_simbolos.Constructor;
import tabla_de_simbolos.ErrorSemantico;
import tabla_de_simbolos.ModificadorMetodo;
import tabla_de_simbolos.TablaDeSimbolos;
import tabla_de_simbolos.Tipo;

/**
 *
 * @author Javi
 */
public class ExpLlamada extends Primario{
    private Expresion exp;
    private List<Llamada> listaLlamadas;

    public ExpLlamada(Expresion exp, List<Llamada> listaLlamadas) {
        this.exp = exp;
        this.listaLlamadas = listaLlamadas;
    }    

    @Override
    public Tipo check(Clase clase, Constructor metodo, TablaDeSimbolos ts) throws ErrorSemantico, IOException {
        Tipo t_exp = exp.check(clase, metodo,ts);
        Tipo t_llamada = t_exp;
        for(Llamada llamada : listaLlamadas){
            t_llamada = llamada.check(clase, metodo,t_llamada,new ModificadorMetodo(new Token("dynamic", "dynamic", -1)),ts);
        }
        
       if(listaLlamadas.isEmpty())
            return t_exp;
        else
            return t_llamada;
    }
    
}
